Over time, the desired range of functionality of computer programs has increased quite significantly making programming an increasingly cumbersome and complex task. Some programming languages tend to be better than others at performing some types of tasks, but in general, the later in time the programming language was introduced, the more complex functionality that the programming language possesses, empowering today's developers more and more. Along with this empowerment, however, comes a concomitant learning curve and degree of care that is required of a developer in order to generate sophisticated, competent code. Further increasing the need for evolved software in today's computing environments is that software is being transported from computing device to computing device and across platforms more and more. Thus, developers are becoming interested in aspects of the software beyond bare bones standalone personal computer (PC) functionality. With the advent of parallel processing, complex computer programming languages, transmission of programs and data across networks, and cross platform computing, programming techniques have grown to be considerably more complex, and capable of much more than the simple standalone instruction by instruction model once known.
In this regard, Simple Object Access Protocol (SOAP) was developed as a way for a program or other object running in one kind of operating system, such as MICROSOFT® WINDOWS®, on one device to communicate with a program or other object in the same or another kind of an operating system, such as Linux, on another device by using the World Wide Web's HyperText Transfer Protocol (HTTP) and extensible Markup Language (XML) as the mechanisms for information exchange. Since Web protocols are installed and available for use by all major operating system platforms, HTTP and XML provide an already at-hand solution to the problem of how programs running under different operating systems in a network can communicate with each other. SOAP specifies exactly how to encode an HTTP header and an XML file so that a program in one computer can call a program in another computer and pass it information. It also specifies how the called program can return a response.
SOAP was developed by a consortium of software companies, and has been proposed as a standard interface to be adopted by the World Wide Web Consortium (W3C). It is somewhat similar to the Internet Inter-ORB Protocol (IIOP), a protocol that is part of the Common Object Request Broker Architecture (CORBA). SUN MICROSYSTEMS'® Remote Method Invocation (RMI) is a similar client/server interprogram protocol between programs written in Java.
An advantage of SOAP is that program calls are much more likely to circumvent or pass through firewall servers that, through the designated port mechanism, screen out requests other than those for known applications. Since HTTP requests are usually allowed through firewalls, programs using SOAP to communicate can be reasonably sure that they can communicate with programs anywhere the Internet reaches.
The above background illustrates (1) that computer programming needs can change quickly in a very short time along with the changing computing environments in which they are intended to operate and (2) that computing programming environments are considerably more complex than they once were. As computing environments become more and more complex, there is generally a greater need for uniformity of functionality across platforms, uniformity among programming language editors, uniformity among programming language compilers and run time aspects of programming. In short, as today's computer system architectures have quickly expanded to the limits of the Earth via global networks, the types of programming tasks that are possible and desirable has also expanded to new limits. For example, since a program may traverse hundreds, if not hundreds of thousands of computers, as a result of copying, downloading or other transmission of the source or object code, developed by a plurality of unknown developers, affiliated with one another or not, the program, program object or program output may not always be understood at or capable of reaching a given destination. In particular, there has grown a need for programmers and computing devices to be able to simplify communications involving and coding for implementing SOAP-based Web services. Under current techniques for implementing SOAP-based Web services, a developer is generally required to write repetitive, error-prone and lengthy code making the coding process cumbersome.
Due to the difficulty of writing effective web services and converting existing code into web services, developers will need technologies and tools to make their jobs easier. There is thus a need for a declarative syntax for specifying SOAP-based web services, especially as web service developers move towards the .NET platform in order to provide an easy to use and systematic way to develop web services. Thus, as networked computing environments continue to push the limits, it would be desirable to combine flexible declarative capabilities with a programming language when implementing SOAP-based communications. There is a further need for a mechanism that substantially reduces the amount and complexity of coding required of a developer in connection with the implementation of SOAP-based Web services.